#ifndef __SERIAL_H
#define __SERIAL_H

#include "stm32f10x.h"
#include <stdarg.h>
#include <stdio.h>
#include "delay.h"
#include "sys.h"

/*********************注意*********************
该串口接受中断配合系统滴答定时器(SysTick)使用，
当接收数据时会将一帧数据整个存入缓存，超过一帧
数据会将其折断，需要及时读取缓存数据并清空计数。
***********************************************/
struct Packet_Type
{
    uint8_t complete;
    uint8_t length;
    uint8_t payload[64];
};

extern struct Packet_Type Serial;

void Serial_Init(uint32_t baud_rate);
void Serial_SendByte(uint8_t Byte);
void Serial_SendArray(uint8_t *Array, uint16_t Length);
void Serial_SendString(char *String);
void Serial_SendNumber(uint32_t Number, uint8_t Length);
void Serial_Printf(char *format, ...);

void Serial_SendPacket(void);
uint8_t Serial_GetRxFlag(void);
uint8_t Serial_DataCheck(void);

#endif
